package org.cos.generation.data;

import org.eclipse.jdt.core.dom.Assignment;
import org.eclipse.jdt.core.dom.Block;
import org.eclipse.jdt.core.dom.DoStatement;
import org.eclipse.jdt.core.dom.FieldDeclaration;
import org.eclipse.jdt.core.dom.ForStatement;
import org.eclipse.jdt.core.dom.IfStatement;
import org.eclipse.jdt.core.dom.MethodDeclaration;
import org.eclipse.jdt.core.dom.MethodInvocation;
import org.eclipse.jdt.core.dom.SingleVariableDeclaration;
import org.eclipse.jdt.core.dom.TypeDeclaration;
import org.eclipse.jdt.core.dom.VariableDeclarationExpression;
import org.eclipse.jdt.core.dom.VariableDeclarationStatement;
import org.eclipse.jdt.core.dom.WhileStatement;

public interface DataFlowSetter {

	public void enterClass(TypeDeclaration node);

	public void exitClass(TypeDeclaration node);

	public void enterMethod(MethodDeclaration node);

	public void exitMethod(MethodDeclaration node);

	public void enterBlock(Block node);

	public void exitBlock(Block node);

	public void enterIf(IfStatement node);

	public void beforeElse(IfStatement node);

	public void exitIf(IfStatement node);

	public void enterFor(ForStatement node);
	
	public void exitFor(ForStatement node);

	public void enterWhile(WhileStatement node);

	public void exitWhile(WhileStatement node);
	
	public void enterDo(DoStatement node);
	
	public void exitDo(DoStatement node);
	
	public void enterDeclaration(SingleVariableDeclaration node);
	
	public void enterDeclaration(VariableDeclarationExpression node);
   
	public void enterDeclaration(VariableDeclarationStatement node);
   
	public void enterDeclaration(FieldDeclaration node);

	public void enterAssignment(Assignment node);

	public void enterInvocation(MethodInvocation node);
	
}
